/**
 * \file dateimanager.h
 *
 * \brief Enthält die Klasse Dateimanager.
 */

#ifndef _DATEIMANAGER_H_
#define _DATEIMANAGER_H_

#include <string>

#include "feld.h"

/**
 * \brief Der Dateimanager speichert Felder in eine Datei auf einer Festplatte und liest gespeicherte Dateien aus.
 */
class Dateimanager {
 private:
 public:
  /** \brief Lädt ein Feld aus einer Datei.
   *
   *  Lädt ein Feld aus der Datei, deren Dateiname übergeben wird. Achtung: das Feld wird als Referenz übergeben und geändert.
   *
   *  \param path Der Dateiname des gespeicherten Feldes.
   *  \param f    Dasjenige Feld, in das geladen werden soll.
   */
  void load(const std::string& path, Feld& f, Regelwerk *pr);

  /** \brief Speichert ein Feld in eine Datei.
   *
   *  Speichert ein Feld mit zugehöriger Beschreibung und dem Datum in die Datei, deren Dateiname übergeben wird.
   *
   *  \param path  Der Dateiname der zu speichernden Datei.
   *  \param descr Eine Beschreibung des Feldes, die z. B. beim Laden wieder angezeigt werden kann, um die Zuordnung zu präzisieren.
   *  \param date  Ein Platzhalter für das Datum, unter der die Datei gespeichert werden soll.
   *  \param f     Dasjenige Feld, das gespeichert werden soll.
   */
  void save(const std::string& path, const std::string& descr,const  std::string& date,const Feld& f,Regelwerk *pr);
  
  /** \brief Gibt die Beschreibung einer Datei aus.
   *
   * \param path Der Dateiname der zu lesenden Datei.
   */
   std::string getDescr(const std::string& path);
};

#endif

